It has become common practice to fit certain vehicles with one or more "memory" mirrors, i.e., a mirror for which one or more desired positions are encoded (stored) in memory and then "remembered" (retrieved from memory). Memory mirrors provide automatic repositioning of a vehicle mirror when the mirror has been moved out of its desired position. For example, a first driver sets a desired position for a mirror and stores the setting, and later, a second driver manually changes the mirror position. When the first driver returns and initiates a switch closure, the mirror automatically returns to its original (memory) position.
Typically, memory mirror systems comprise known electronic hardware, e.g., two motors, one for up/down mirror movement about a "horizontal" axis and another for left/right mirror movement about a "vertical" axis, each motor having analog voltage position feedback, driven by an electronic controller comprising: a 4-bit micro-controller with "on chip" memory, motor drivers, and analog-to-digital (A/D) converters, such as that described in U.S. Pat. No. 4,929,878.
Mirror movement is typically achieved by mounting a mirror to a support shaft using a fixed position ball joint, at the center of the mirror, thereby allowing mirror movement in all directions, and pushing/pulling an off-center point on the mirror using a motor connected to the mirror by a rack-and-pinion arrangement. The rack-and-pinion converts clockwise or counter-clockwise (CW/CCW) rotational motion of the motor output shaft into translational motion of a rod (or rack) using a gear mounted to the motor output shaft. The rod has notches which mesh with the gear and allow the rod to be driven thereby. For example, for left/right mirror movement, a first motor drives a first rod having one end attached to the mirror at a point along a horizontal line, a known distance to the right or left of the center of the mirror. For up/down mirror movement, a second motor drives a second rod having one end attached to the mirror at a point along a vertical line (perpendicular to the horizontal line), a known distance above or below the center of the mirror. The position of the mirror is typically described by two coordinates, one for the position of each rod. Position sensing of each rod (i.e., position feedback) is provided by a potentiometer, having a wiper shaft geared to the motor output shaft, which provides a variable voltage to the electronic controller.
The motors are typically bidirectional (CW or CCW), DC, constant speed motors, and are operated either individually or together, having equal speeds when turned ON. When a motor is turned ON it may be run either CW or CCW, which translates into left/right mirror movement by one motor and up/down mirror movement by the other motor (as described hereinbefore). Thus, the mirror has eight paths of motion: up, down, right, left, up left 45.degree., up right 45.degree., down left 45.degree., down right 45.degree..
A memory mirror system includes an algorithm for driving the mirror from a starting position to a previously stored "memory" or target position. Previous algorithms, e.g., the algorithm described in the aforementioned patent (referred to hereinafter as the prior art algorithm), start with both motors running (i.e., motion at a 45.degree. angle from the present position). Viewing the starting mirror position as the origin (center) of an orthogonal coordinate system, the prior art algorithm first drives the mirror at 45.degree. in the quadrant where the destination is located until the mirror position is along either a horizontal or vertical line from the destination, then turns OFF the appropriate motor allowing the remaining running motor to bring the mirror to the desired target position.
Memory mirrors are typically mounted within a cavity or housing that provides a limited amount of mirror movement. If the mirror hits a boundary (also known as a stop or obstruction) the mirror travel stops. The mirror movement boundaries are typically a known convex shape having no concave edges, such as a circle, an oval, or a parallelogram. However, the shape of the boundaries may also be more complex, having concave edges, such as a "dog bone" pattern, i.e., a square with corners which are rounded and bulge outward away from the center. The shape of the boundaries is determined by the shape of a power pack, which houses the motors and potentiometers, and the distance from the power pack to the mirror (determined by the length of the mirror's supporting shaft). The mirror is typically a known shape such as a circle, an oval, a half oval, or a parallelogram but is not necessarily the same shape as the boundaries it is mounted within. Using existing mirror positioning algorithms, it is possible to hit a boundary, e.g., when a concave boundary lies between the starting and ending points, thereby requiring the algorithm to detect when a boundary is hit. Boundary detection is typically done by calculating the rate of change of motor speed with time and comparing it to a known predetermined value, e.g., 0 degrees/second. Furthermore, once a boundary is hit, the mirror is typically driven to the origin (0,0) of the mirror movement area using the same positioning algorithm and, once at the origin, a second attempt is made to drive the mirror to the desired position. Driving to the origin increases the time for the mirror to reach the "memory" position by approximately 2 to 3 seconds, and detecting boundary collisions requires additional complexity of the repositioning algorithm which translates into increased memory space and slower execution time.